package com.clwl.supervise.superviseapp.controller.rectification;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clwl.supervise.superviseapp.config.RepeatSubmit;
import com.clwl.supervise.superviseapp.entity.base.CommonSearchEntity;
import com.clwl.supervise.superviseapp.entity.result.ResultEntity;
import com.clwl.supervise.superviseapp.entity.supervise.JgRectification;
import com.clwl.supervise.superviseapp.entity.supervise.JgRectificationImage;
import com.clwl.supervise.superviseapp.service.rectification.RectificationService;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.annotation.Resource;
import java.util.List;
import java.util.Map;


/**
 * 问题整改信息
 */
@RestController
@RequestMapping("/rectification")
public class RectificationController {

    @Resource
    private RectificationService rectificationService;

    /**
     * 获取整改列表信息
     * @param pageNum 当前页数
     * @param pageSize 每页数据数量
     * @return
     */
    @GetMapping("page")
    public ResultEntity<IPage<Map<String,Object>>> page(Integer pageNum, Integer pageSize, CommonSearchEntity commonSearchEntity) {
        IPage<Map<String,Object>> pageList = rectificationService.selectRectificationPage(pageNum,pageSize,commonSearchEntity);
        return ResultEntity.success(pageList);
    }

    /**
     * 获取整改单的问题项  todo
     *  问题整改功能中点击一个未整改的进入之后显示出问题项内容
     * @param rectificationId 整改ID（在获取列表接口中有）
     * @return
     */
    @GetMapping("problemList")
    public ResultEntity<List<Map<String,Object>>> problemList(Long rectificationId) {
        List<Map<String,Object>> pageList = rectificationService.selectRectificationItemList(rectificationId);
        return ResultEntity.success(pageList);
    }

    /**
     * 保存整改项的图片信息
     *    问题项中上传整改照片
     * @param rectificationItemId 整改问题项ID
     * @param file 文件信息
     * @return
     */
    @PostMapping("uploadRectificationItemFile")
    public ResultEntity<String> uploadRectificationItemFile(Long rectificationItemId, MultipartFile file) {
        try {
            String filePath = rectificationService.uploadRectificationItemFile(rectificationItemId,file);
            return ResultEntity.success(filePath);
        } catch (Exception e) {
            return ResultEntity.error(e.getMessage());
        }
    }

    /**
     * 获取问题整改的请改情况tab中的整改信息回显  todo
     *   获取问题整改的请改情况tab中的整改信息回显
     * @param rectificationId 整改ID（在获取列表接口中有）
     * @return
     */
    @GetMapping("getRectificationSituation")
    public ResultEntity<JgRectification> getRectificationSituation(Long rectificationId) {
        try {
            JgRectification rectification =  rectificationService.getRectificationSituation(rectificationId);
            return ResultEntity.success(rectification);
        } catch (Exception e) {
            return ResultEntity.error(e.getMessage());
        }
    }





    /**
     * 保存整改情况信息
     *  保存整改情况信息,
     * @param rectificationId 整改ID（在获取列表接口中有）
     * @param supervisePersonalId1 核查人员ID1
     * @param supervisePersonalId2 核查人员ID2
     * @param verifyIdea 核查意见
     * @param verifyResult 核查结果 1-通过；2-不通过
     * @param temporary  是否临时1-是；2-否
     * @param transfertofile  是否转为立案1-是；2-否
     * @param rectificationTimeLimit  整改时限
     * @param nextRectificationTimeLimit  下次整改时限
     * @return
     */
    @PostMapping("saveRectificationInfo")
    @RepeatSubmit
    public ResultEntity<String> saveRectificationInfo(Long rectificationId,Long supervisePersonalId1,Long supervisePersonalId2,
                                                      String verifyIdea,String verifyResult,String temporary,String rectificationTimeLimit,String nextRectificationTimeLimit,String transfertofile
                                                      ) {
        try {
            rectificationService.saveRectificationInfo( rectificationId, supervisePersonalId1, supervisePersonalId2,
                     verifyIdea, verifyResult,temporary,rectificationTimeLimit,nextRectificationTimeLimit,transfertofile);
            return ResultEntity.success();
        } catch (Exception e) {
            return ResultEntity.error(e.getMessage());
        }
    }


    /**
     * 上传整改报告信息
     *  保存问题整改中的整改情况上传整改报告信息,
     * @param rectificationId 整改ID（在获取列表接口中有）
     * @param file 整改报告照片文件
     * @return
     */
    @PostMapping("uploadRectificationFile")
    public ResultEntity<JgRectificationImage> uploadRectificationFile(Long rectificationId, MultipartFile file ) {
        try {
            JgRectificationImage fileUrl = rectificationService.uploadRectificationFile( rectificationId, file);
            return ResultEntity.success(fileUrl);
        } catch (Exception e) {
            return ResultEntity.error("上传失败!");
        }
    }

    /**
     * 删除整改文件信息
     *
     * @param id 整改文件id
     * @return
     */
    @PostMapping("deleteRectificationImage")
    public ResultEntity<String> deleteRectificationImage(Long id  ) {
        try {
             rectificationService.deleteRectificationImage( id);
            return ResultEntity.success( );
        } catch (Exception e) {
            return ResultEntity.error(e.getMessage());
        }
    }


    /**
     * 查询已经整改的详情信息
     * @param rectificationId 整改单id
     * @return
     */
    @GetMapping("getRectificationInfo")
    public ResultEntity<JgRectification> getRectificationInfo(@RequestParam(required = true) Long rectificationId) {
        try {
            JgRectification rectification  =  rectificationService.getRectificationInfo(rectificationId);
            return ResultEntity.success(rectification);
        } catch (Exception e) {
            return ResultEntity.error(e.getMessage());
        }
    }



}
